Javascript toFixed 不舍入
全部标签 我在四舍五入时遇到问题。我有一个float,我想将其四舍五入到小数点后的百分之一。但是,我只能使用.round,它基本上将它变成一个int,意思是2.34.round#=>2.有没有一种简单的效果方法来做类似2.3465#=>2.35 最佳答案 向round传递一个参数,其中包含要舍入到的小数位数>>2.3465.round=>2>>2.3465.round(2)=>2.35>>2.3465.round(3)=>2.347 关于ruby-on-rails-Ruby:Ruby中的舍入flo
我不明白以下程序的输出:intmain(){floatx=14.567729f;floatsqr=x*x;floatdiff1=sqr-x*x;doublediff2=double(sqr)-double(x)*double(x);std::cout输出:6.63225e-0066.63225e-006我使用VS2010,x86编译器。我希望得到不同的输出06.63225e-006为什么diff1不等于0?为了计算sqr-x*x,编译器将浮点精度提高到两倍。为什么? 最佳答案 浮点寄存器是80位(在大多数现代CPU上)在表达式中,结
我有一个自定义的UIView,它通过像这样使用layer.cornerRadius来圆角:-(void)layoutSubviews{[superlayoutSubviews];self.layer.cornerRadius=self.frame.size.width/2.0;self.layer.borderColor=[UIColorwhiteColor].CGColor;self.layer.borderWidth=2.0;self.layer.masksToBounds=YES;self.backgroundColor=[UIColorredColor];}我怎样才能摆脱非常细
在这种情况下:floata=0.99999f;intb=1000;intc=a+b;结果c=1001。我发现它发生是因为b被转换为float(特定于iOS),然后a+b没有足够的精度1000.9999并且(为什么?)四舍五入到更高的值。如果a是0.999f,我们得到c=1000-理论上正确的行为。所以我的问题是为什么float四舍五入到更高的值?在哪里描述了这种行为(或惯例)?我在iPhone模拟器、AppleLLVM4.2编译器上对此进行了测试。 最佳答案 在intc=a+b中,整数b先转换为float,再转换为2个float添加
我有像这样的双倍值17.125。它应该四舍五入到17.13如果我使用像%.2f这样的简单方法,它会显示17.12我还遵循了此处其他线程中描述的几种方法,例如使用NumberFormatter等等-但没有运气。也许有人对我有解决这个问题的建议?我必须自己四舍五入吗? 最佳答案 试试这个:floatnumber=17.125;NSNumberFormatter*format=[[NSNumberFormatteralloc]init];[formatsetNumberStyle:NSNumberFormatterDecimalStyle
我有一个float,我想将其向上或向下舍入到最接近的整数。例如:1.4=1.01.77=2.01.1=1.0等...我在ObjectiveC中这样做,所以我想我需要一个标准的数学函数...nearbyintf会做吗? 最佳答案 您可以使用math.h中定义的任何标准C库数学函数。nearbyintf可以工作,roundf或ceilf或floorf也可以,具体取决于您的需要。如果您在编辑器中选择并双击这些函数,Xcode将向您显示这些函数的文档(UNIX手册页)。 关于iphone-向上或
在我的UICollectionViewCell类中,我这样写:-(void)layoutSubviews{[superlayoutSubviews];self.myImageView.layer.cornerRadius=CGRectGetHeight(self.myImageView.frame)/2;self.myImageView.layer.masksToBounds=YES;}但这并不是在所有情况下都能正常工作,它看起来像这样: 最佳答案 我遇到了类似的问题tryingtogetacollectionViewinsidea
我需要显示一个具有指定小数位数(四舍五入)的float,特别是最多两位小数,即使该数字没有小数部分。我知道的一种方法是使用sprintf()PHP函数,如下所示。echosprintf("%0.2f",123);它返回123.00。echosprintf("%0.2f",123.4555);返回123.46但以下内容没有返回我需要的内容。echosprintf("%0.2f",123.455);//5isremoved-theright-mostdigit.我希望它返回123.46但它没有。它返回123.45。尽管差别不大,但在这两种情况下我都需要返回123.46。round()函数可
echo(int)((0.1+0.7)*10);为什么上面输出7?我了解PHP如何向0舍入,但(0.1+0.7)*10不是被评估为float然后转换为整数吗?谢谢! 最佳答案 当小数在内部转换为二进制等价物时,精度会有所下降。计算值将类似于7.9+而不是预期的8。如果您需要高精度,请使用GMP函数族或bcmath图书馆。 关于PHP整数舍入问题,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques
在php中有什么巧妙的方法可以四舍五入到最接近的有效数字吗?所以:0->09->910->1017->1077->70114->100745->7001200->1000? 最佳答案 $numbers=array(1,9,14,53,112,725,1001,1200);foreach($numbersas$number){printf('%d=>%d',$number,$number-$number%pow(10,floor(log10($number))));echo"\n";}不幸的是,当$number为0时,这会严重失败,但